<?php namespace app\admin\controller;

use houdunwang\view\View;

class Article extends Common {
    protected $db;
    public function __init(){
        //实例化Article模型，赋给属性db
        $this->db = new \system\model\Article();
    }
    public function index(){
        //显示在页面上，2为页面内容显示两条数据, //参数：(每页显示几条，是否在回收站【0 不在  1在】)
        $data = $this->db->getAllData(2,0);
        View::with('data',$data);//此时$data是一个数组
        return view();
    }

    /**
     * @return View添加
     */
    public function store(){
        if(IS_POST){
            //p($_POST);
            $res = $this->db->store();
            if($res['valid']){
                //hdphp提供了ajax请求时会返回{valid:1,message:'请求成功'}，所以message有两层意思，一个提示，一个异步，在network可看到
                message($res['message'],u('index'),'success',1);
            }
            message($res['message'],'back','error');
        }

         //$page = Page::row(5)->make(100);
         //echo Page::desc(['pre'=>'上楼', 'next'=>'下楼','first'=>'首页','end'=>'尾页','unit'=>'个'])->make(100,5);

        //1.获取所属分类数据,具体交给模型处理
        $cateData = $this->db->getCateData();
        //p($cateData);
        View::with('cateData',$cateData);
        //2.获取所有的标签数据，具体的控制器不处理，交给模型处理
        $tagData = $this->db->getTagData();
        //p($tagData);
        View::with('tagData',$tagData);
        return view();
    }
    /**
     * 编辑
     */
    public function edit(){
        if(IS_POST){
            $res =$this->db->edit();
            if ($res['valid']){
                //ajax请求的时候会返回：{valid:1,message:'请求成功'}
                message($res['message'],u('index'),'success');
            }
            //{valid:0,message:''}
            message($res['message'],'back','error');
        }
        //获取旧数据
        $aid = q('get.aid');
        //1.获取数据的所属分类
        $cateData = $this->db->getCateData();
        //分配分类变量
        View::with('cateData',$cateData);
        //2.获得所有标签数据
        $tagData = $this->db->getTagData();
        //分配标签变量
        View::with('tagData',$tagData);
        //3.获取旧数据【关联文章表和文章数据表】
        $oldData = $this->db->getOldData($aid);
        //p($oldData);
        //分配旧数据的变量
        View::with('oldData',$oldData);
        //获得当前文章有哪些标签,小动作，用查找而不用关联
        $oldTag = Db::table('article_tag')->where('article_aid','=',$aid)->lists('tag_tid');
        View::with('oldTag',$oldTag);
        return view();
    }

    /**
     * @return View回收站首页
     */
    public function recycleIndex(){
        //参数：(每页显示几条，是否在回收站【0 不在  1在】)
        $data = $this->db->getAllData(5,1);
        //分配变量
        View::with('data',$data);
        return view();
    }
    //删除到回收站
    public function delToRecycle(){
        $aid = q('get.aid');
        if($this->db->where('aid',$aid)->update(['is_recycle'=>1])){
            message('成功到回收站',u('index'),'success',1);
        }
        message('回收失败',u('index'),'error',1);
    }
    //从回收站恢复
    public function OutToRecycle(){
        $aid = q('get.aid');
        if(Db::table('article')->where('aid','=',$aid)->update(['is_recycle'=>0])){
            message('恢复成功',u('recycleIndex'),'success',1);
        };
        message('恢复失败','back','error',1);
    }
    //彻底删除文章
    public function AbsoluteDel(){
        $aid = q('get.aid');
        $res = $this->db->AbsoluteDel($aid);
        if($res){
            message('彻底删除成功',u('recycleIndex'),'success',1);
        }
        message('彻底删除失败',u('recycleIndex'),'error',1);
    }




    /**
     * 框架里的上传处理,上传这玩意儿要在network里面看
     */
    public function upload(){
        //自动上传处理，只要执行组件upload方法，系统自动分析上传数据完成上传处理，并将成功上传的文件列表返回
        $files=File::upload();
        //$files是什么东西，在这里打印，在浏览器“network”里面查看具体数据信息，ALL里面，不是XHR里面
        //dd($files);此时已经到了服务器["path"]=>string(29) "attachment/47981487654231.jpg"
        $path =$files[0]['path'];
        echo $path;die;//返回给前台
    }
    /**
     * 异步删除上传图片
     */
    public function delImg(){
        $path = $_POST['path'];
        //删除文件
        if(file_exists($path)){
            unlink($path);
        }
        //给前台个是否成功删除状态，成功返回1
        echo 1;die;
    }
}
